iT邦幫忙

2024 iThome 鐵人賽

DAY 12
0
Python

在AWS上進行物聯網與人工智慧實作系列 第 12

D12-使用 MicroPython 安裝新模組與使用

  • 分享至 

  • xImage
  •  

使用 MicroPython 安裝新模組與使用

目錄

在電腦的 Python 可以透過 pip 來安裝第三方的套件,本篇文章主要是介紹如何在 MicroPython 裡安裝新的套件 requests,以及透過這新套件上傳資料到 Google Forms,模擬上傳溫度的感測功能。

安裝套件

以下步驟表示新增和使用套件時的流程:

  • Python 模組和套件被轉換為分發套件檔案,並在 Python 套件索引 (PyPI) 上發佈。
  • MicroPython 則是發佈在 micropython-lib,有以下幾種安裝方式
    • 在 ESP32-CAM 上,使用 upip 套件管理器,v1.19 後已改為 mip
    • 在本機使用 mpremote 將套件安裝在 ESP32-CAM 上
    • 手動安裝

mip (mip installs packages) 的概念與 Python 的 pip 工具相似,但是它不使用 pypi 索引,默認情況下,是使用 micropython-lib 作為其索引。 從 micropython-lib 下載時,mip 將自動獲取 .mpy 文件。該模組可以從 micropython-lib 和第三方站點(套件括GitHub)安裝套件裝。

在 REPL 環境下使用 mip 安裝的語法,但先決條件是 ESP32-CAM 必須要先連上網。

import mip
mip.install("pkgname")  # 直接指定套件名稱,會從 https://micropython.org/pi/v2 找尋並安裝
mip.install("pkgname", version="x.y")  # 指定套件名稱與版次
mip.install("pkgname", mpy=False)  # 安裝原碼文件 (會是 .py 而不是 .mpy 檔)
mip.install("http://example.com/x/y/foo.py") #  安裝第三方套件
mip.install("github:org/repo/path/foo.py", target="third-party") # 從 GitHub 直接安裝
mip.install("github:org/user/path/package.json") # 安裝比較複雜的套件,套件含了一些相依庫的描述

mip 預設會把套件安裝在(/lib) 中。如果有指定 target 選項,則會安裝在該目錄,但記得在 sys.path 變量中,加入該目錄 (sys.path.append("third-party")),不然 import 會找不到該套件的所在位置。

安裝 mip

因為原先韌體預設沒有安裝mip,所以要透過遠程方式 (mpremote) 安裝 mip,我們可以使用 Thonny 的畫面來操作這個安裝功能,選擇工具列中的工具->管理套件,進入套件管理畫面,如下圖所示。

下圖可以看到在 Thonny 上進行安裝 mip,會連到 PyPImicropython-lib 網站進行搜尋並下載安裝,會安裝在 ESP32-CAM 的 /lib 路徑,安裝時會一並安裝相依套件 requests,安裝完畢後再進入 Thonny 環境,就可以正常使用 mip。

https://ithelp.ithome.com.tw/upload/images/20240819/20129510h2Am4OQLLL.png
圖 1. 使用 Thonny 安裝 mip

https://ithelp.ithome.com.tw/upload/images/20240819/20129510KjuAk9mPlo.png
圖 2. mip 安裝在 ESP32-CAM 所在路徑

模擬溫度感測器 - 串接 Google Forms

設定 Google Forms

接下來要練習從 ESP32-CAM 上傳溫度到 Google Forms 中,首先先建立 Google Forms,用來記錄溫度的表格:

  1. 輸入表格名稱:高雄02有機農場溫度記錄表
  2. 設定表格欄位:溫度,類型選擇 簡答
  3. 點選右上角選單。
  4. 選擇取得預先填入的連結

https://ithelp.ithome.com.tw/upload/images/20240819/201295109BD0bkRf3V.png
圖 3. 新增 Google Forms

  1. 輸入溫度
  2. 點擊 取得連結
  3. 點擊 複製連結
    https://ithelp.ithome.com.tw/upload/images/20240819/20129510qotsu1Qkbf.png
    圖 4. 取得預先填入的連結

連結格式如下

https://docs.google.com/forms/d/e/1FAIpQLScuWtqDbWAMqiRqc4PnRqBNTBXxKKxTjy-7rG6mBgjqwb7caTA/viewform?usp=pp_url&entry.898245151=32.0

修改後方的 viewform?usp=pp_url&entry.898245151=32.0

  1. viewform 改成 formResponse
  2. 刪除 usp=pp_url
  3. 修改 entry.898245151=32.0,將32.0改成打算傳給 google forms 的溫度數值,比方說 entry.898245151=35.2
  4. 在最後面加上 &submit=submit

修改完,如下所示,將這個網址貼到瀏覽器上

https://docs.google.com/forms/d/e/1FAIpQLScuWtqDbWAMqiRqc4PnRqBNTBXxKKxTjy-7rG6mBgjqwb7caTA/formResponse?entry.898245151=35.2&submit=submit

https://ithelp.ithome.com.tw/upload/images/20240819/20129510RtHfFuqDb3.png
圖 5. 輸入修改後的預先填入的連結網址

https://ithelp.ithome.com.tw/upload/images/20240819/20129510bprAZFthNt.png
圖 6. 觀看回覆結果

使用 ESP32-CAM 回覆

安裝urequests

在 Thonny 中安裝 urequests,因為需要透過這個套件才能模擬瀏覽器的動作,說明一下,mip也有安裝requests的套件,但這個套件無法是用 https 的存取,所以需要額外安裝套件。

https://ithelp.ithome.com.tw/upload/images/20240819/2012951026lk98vA1C.png
圖 7. 安裝urequests

在接著在 Thonny 中輸入以下程式碼,記得將

  • 7行: Wi-Fi 的 ssid 跟 password 替換成自己的 Wi-Fi 帳號
  • 14行:輸入修改後的預先填入的連結網址,記得在將溫度修改一下,好辨識是否是新資料
import network, time
import urequests as requests

print('connect ot Wi-Fi')
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect('your-ssid', 'your-password')
while not wlan.isconnected():
    time.sleep(1)
    print('.',end='')
    pass
print('connected')

url = 'https://docs.google.com/forms/d/e/1FAIpQLScuWtqDbWAMqiRqc4PnRqBNTBXxKKxTjy-7rG6mBgjqwb7caTA/formResponse?entry.898245151=32.5&submit=submit'
r = requests.get(url)
print(r.reason)

執行成功會顯示 OK
https://ithelp.ithome.com.tw/upload/images/20240819/20129510zaJENcXqJJ.png
圖 8. 安裝urequests

https://ithelp.ithome.com.tw/upload/images/20240819/20129510d6MhsGon3T.png
圖 6. 觀看回覆結果

參考資料


上一篇
D11-使用 MicroPython 連接 Wi-Fi、同步 NTP
下一篇
D13-使用 MicroPython 拍照-ESP32-CAM
系列文
在AWS上進行物聯網與人工智慧實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言